home *** CD-ROM | disk | FTP | other *** search
/ QRZ! Ham Radio 4 / QRZ Ham Radio Callsign Database - Volume 4.iso / files / packet / misc / netconf.arc / PSDESIGN.TXT < prev    next >
Text File  |  1988-12-10  |  25KB  |  781 lines

  1.  
  2.  
  3.  
  4.  
  5.  
  6.  
  7.                     Software Design Issues _f_o_r _t_h_e
  8.               _P_S-_1_8_6 _A_d_v_a_n_c_e_d _P_a_c_k_e_t _N_e_t_w_o_r_k _C_o_n_t_r_o_l_l_e_r
  9.  
  10.  
  11.           Brian Kantor, WB6CYT
  12.    _A_c_a_d_e_m_i_c _N_e_t_w_o_r_k _O_p_e_r_a_t_i_o_n_s _G_r_o_u_p
  13.       _O_f_f_i_c_e _o_f _A_c_a_d_e_m_i_c _C_o_m_p_u_t_i_n_g
  14.   _U_n_i_v_e_r_s_i_t_y _o_f _C_a_l_i_f_o_r_n_i_a, _S_a_n _D_i_e_g_o
  15.  
  16.  
  17.  
  18.  
  19.  
  20.  
  21.  
  22.  
  23.  
  24.  
  25.  
  26.  
  27.  
  28.  
  29.  
  30.  
  31.  
  32.  
  33.  
  34.  
  35.  
  36.  
  37.  
  38.  
  39.  
  40.  
  41.  
  42.  
  43.  
  44.  
  45.  
  46.  
  47.  
  48.  
  49.  
  50.  
  51.  
  52.  
  53.  
  54.  
  55.  
  56.  
  57.  
  58.  
  59.  
  60.  
  61.                            December 6, 1988
  62.  
  63.  
  64.  
  65.  
  66.  
  67.                                 - 2 -
  68.  
  69.  
  70.                  Abstract
  71. _A _f_a_s_t _n_e_t_w_o_r_k _f_o_r _a_m_a_t_e_u_r _r_a_d_i_o  _r_e_q_u_i_r_e_s
  72. _s_o_p_h_i_s_t_i_c_a_t_e_d  _n_o_d_e  _c_o_n_t_r_o_l_l_e_r_s  _t_o  _w_o_r_k
  73. _w_e_l_l.  _K_e_y _t_o _t_h_e _p_e_r_f_o_r_m_a_n_c_e _o_f  _a_d_v_a_n_c_e_d
  74. _n_o_d_e  _c_o_n_t_r_o_l_l_e_r _h_a_r_d_w_a_r_e _i_s _t_h_e _d_e_s_i_g_n _o_f
  75. _t_h_e _o_n-_b_o_a_r_d _s_o_f_t_w_a_r_e.  _I_s_s_u_e_s _o_f  _h_i_g_h_l_y-
  76. _e_f_f_i_c_i_e_n_t  _d_e_v_i_c_e _d_r_i_v_e_r_s, _p_r_o_t_o_c_o_l _e_n_c_a_p_-
  77. _s_u_l_a_t_i_o_n, _a_n_d _p_r_o_c_e_s_s _m_a_n_a_g_e_m_e_n_t  _m_u_s_t  _b_e
  78. _a_d_d_r_e_s_s_e_d _t_o _e_n_s_u_r_e _a_c_c_e_p_t_a_b_l_e _p_e_r_f_o_r_m_a_n_c_e
  79. _w_i_t_h   _l_i_m_i_t_e_d   _m_e_m_o_r_y   _a_n_d   _a_f_f_o_r_d_a_b_l_e
  80. _h_a_r_d_w_a_r_e.   _P_S-_1_8_6  _h_a_r_d_w_a_r_e _d_e_s_i_g_n _i_s_s_u_e_s
  81. _a_r_e _d_i_s_c_u_s_s_e_d  _i_n  _a  _c_o_m_p_a_n_i_o_n  _p_a_p_e_r  _b_y
  82. _M_i_c_h_a_e_l  _B_r_o_c_k,  _F_r_a_n_k_l_i_n _A_n_t_o_n_i_o, _a_n_d _T_o_m
  83. _L_a_F_l_e_u_r.
  84.  
  85.  
  86. _1.  _I_n_t_r_o_d_u_c_t_i_o_n
  87.  
  88.      A high-throughput data  network  must
  89. consist  of both high speed links and fast
  90. network node controllers.  To achieve  the
  91. high throughput in the controller requires
  92. both good hardware and efficient software.
  93.  
  94.      The PS-186 offers a highly  efficient
  95. hardware  design including very high speed
  96. input/output and  a  fast  processor.  The
  97. PS-186's  high-speed  DMA  channels  allow
  98. much of the I/O  to  proceed  in  parallel
  99. with computation, thus overlapping I/O and
  100. processing that in  a  less  sophisticated
  101. system might need to proceed serially.
  102.  
  103.      However,  even  the   most   advanced
  104. hardware  can  be  crippled by inefficient
  105. software that wastes CPU and I/O resources
  106. rather  than  applying them to useful pro-
  107. cessing. To take  full  advantage  of  the
  108. PS-186 architecture, we have chosen to use
  109. a multi-tasking system  that  can  support
  110. several   programs  running  at  once.  By
  111. dividing up  tasks  into  those  that  are
  112. time-critical  and  those that are not, we
  113. can set up the critical tasks in the  sys-
  114. tem   such  that  they  will  receive  the
  115. required  CPU  attention.  Less   critical
  116. tasks will proceed as time permits.
  117.  
  118. _________________________
  119. Author's current address:
  120. _e_l_e_c_t_r_o_n_i_c: brian@sdcsvax.ucsd.edu
  121. _p_a_p_e_r: Office of Academic Computing B-028, La Jolla, CA 92093 USA
  122.  
  123.  
  124.  
  125.  
  126.                            December 6, 1988
  127.  
  128.  
  129.  
  130.  
  131.  
  132.                                 - 3 -
  133.  
  134.  
  135.      The  PS-186  multi-tasking  operating
  136. system  is based in general terms upon the
  137. UNIXr and other similar  simple  operating
  138. systems.  In particular, many of the ideas
  139. and practices used have  been  taken  from
  140. those presented in the MINIX [10] and XINU
  141. [2,3] model operating systems.
  142.  
  143. _2.  _S_o_f_t_w_a_r_e _O_r_g_a_n_i_z_a_t_i_o_n
  144.  
  145.      The PS-186 operating software can  be
  146. divided into two categories.  One of these
  147. is the central or core part of the system,
  148. referred to as the _k_e_r_n_e_l. It is responsi-
  149. ble  for  all  supervisory  low-level  I/O
  150. functions,  process and memory management,
  151. interrupt  handling,  and  initialization,
  152. and  time-critical  tasks.  The  remaining
  153. software  is   termed   the   _u_s_e_r   level
  154. software,  although  there  are,  strictly
  155. speaking, no users on  this  system.   The
  156. true  distinction  is that while there may
  157. be many ``user'' processes running at  one
  158. time, there is only one kernel.
  159.  
  160.      User processes can be  stopped  while
  161. they  are  waiting for input, or while the
  162. kernel is handling some other  event  such
  163. as an arriving packet.  They are typically
  164. used  for  purposes  that  are  not  time-
  165. critical  and  that  can  operate indepen-
  166. dently of particular hardware  status.   A
  167. few examples of tasks that might better be
  168. placed in user processes are  table  look-
  169. ups,  help  menu  displays,  and the like.
  170. These  are  things  that  can  proceed  in
  171. parallel with other similar tasks.
  172.  
  173.      The kernel, on  the  other  hand,  is
  174. strictly  _s_i_n_g_l_e-_t_h_r_e_a_d_e_d  -  it  can only
  175. execute by itself,  and  is  intended  for
  176. those  tasks  that  need to have exclusive
  177. access to the processor or  devices,  such
  178. as interrupt handlers and device drivers.
  179.  
  180.      User processes do NOT directly access
  181. devices,  nor  do  they handle interrupts.
  182. All user processes  communicate  with  the
  183. kernel by means of _s_y_s_t_e_m _c_a_l_l_s that cause
  184. the kernel to perform some task on  behalf
  185. _________________________
  186. UNIX is a registered trademark  of  AT&T  Bell  Labora-
  187. tories
  188.  
  189.  
  190.                            December 6, 1988
  191.  
  192.  
  193.  
  194.  
  195.  
  196.                                 - 4 -
  197.  
  198.  
  199. of the user process.  A common example  is
  200. a  read or a write - data transfer between
  201. a user process and a device.
  202.  
  203.      The kernel is  responsible  for  per-
  204. forming  all encapsulating protocols below
  205. some arbitrary level, which we have chosen
  206. to  be at the ``data stream'' level.  That
  207. means that when  an  AX.25  connection  is
  208. made to the PS-186, the kernel software is
  209. responsible  for  the   acceptance,   ack-
  210. nowledgement,  and  eventual  knockdown of
  211. the connection.  The kernel  will  extract
  212. the  data  field  from  the incoming AX.25
  213. packet and make it  available  to  a  user
  214. process  executing  an  appropriate  _r_e_a_d.
  215. Likewise, a user process  that  wishes  to
  216. send  data  over  an open AX.25 connection
  217. will give the data to the kernel by  means
  218. of  a  _w_r_i_t_e  system  call, and the kernel
  219. will do  the  encapsulation  necessary  to
  220. send the data via AX.25, and then queue it
  221. for transmittal by the appropriate device.
  222.  
  223.      When  there  are  multiple  protocols
  224. involved,  such  as  TCP-IP  on AX.25, the
  225. kernel does the multiple  extractions  and
  226. encapsulations  as  required,  so that the
  227. user process again works only at the  data
  228. level.
  229.  
  230.      The decision on whether  to  place  a
  231. particular  task in the kernel or leave it
  232. to user-level processing  is  based  on  a
  233. number  of  criteria, some of them empiri-
  234. cal.  In general, any task which can  wait
  235. to  complete without impacting the perfor-
  236. mance of  other  tasks  can  generally  be
  237. placed  in  a  user-level process, whereas
  238. tasks that have a number of process depen-
  239. dencies  pretty much have to go inside the
  240. kernel.  Additionally, any protocol encap-
  241. sulation  or unwrapping that does not gen-
  242. erate additional packets can be placed  in
  243. the  kernel,  thereby making that function
  244. available to all user-level  processes  by
  245. means of a uniform system call.
  246.  
  247. _3.  _I_n_p_u_t-_O_u_t_p_u_t
  248.  
  249.      Each  device  in  the  PS-186  has  a
  250. module  of  code associated with it in the
  251. kernel  that  does  the  low-level  input-
  252. output  interface  to the actual hardware.
  253.  
  254.  
  255.                            December 6, 1988
  256.  
  257.  
  258.  
  259.  
  260.  
  261.                                 - 5 -
  262.  
  263.  
  264. This module is often referred  to  in  the
  265. literature as a _d_e_v_i_c_e _d_r_i_v_e_r.
  266.  
  267.      At the low level hardware  interface,
  268. a  device driver is responsible for taking
  269. data to be output  from  some  generalized
  270. system  data  structure, and actually out-
  271. putting it through the corresponding piece
  272. of hardware.  It also must accept incoming
  273. data from the hardware device and place it
  274. into  a  system data structure for further
  275. processing.  It  is  common   for   device
  276. drivers  to operate in an _i_n_t_e_r_r_u_p_t-_d_r_i_v_e_n
  277. mode, with their actions being invoked  in
  278. response  to  ``completion''  or ``ready''
  279. signals from the hardware. We have  chosen
  280. this  method over a perhaps simpler scheme
  281. where  the  main  software   loop   simply
  282. repetitively  checks for device availabil-
  283. ity, because the latter scheme potentially
  284. wastes  a tremendous portion of the avail-
  285. able processing power.  Additionally,  the
  286. various  drivers  make use of the PS-186's
  287. DMA (Direct Memory Access)  capability  to
  288. move  the  actual  data between memory and
  289. the device without the need of the CPU  to
  290. read and write every byte.
  291.  
  292.      There also must be a simple and  con-
  293. sistent higher-level interface to the sys-
  294. tem data  structures  that  the  low-level
  295. device  drivers access.  We have chosen to
  296. implement this interface as _r_e_a_d and _w_r_i_t_e
  297. system  calls  that invoke high-level por-
  298. tions of the device drivers. Additionally,
  299. there  are both high- and low-level confi-
  300. guration, status, and initialization func-
  301. tions  that are logically part of the dev-
  302. ice  driver.   Thus  each  driver  can  be
  303. divided   into   two   logical  functions,
  304. referred to as the ``top'' and  ``bottom''
  305. of the driver.
  306.  
  307.      The ``bottom'' function is the inter-
  308. face  to  the  hardware;  it is invoked in
  309. response to an interrupt from  the  actual
  310. device.  Typically its sole function is to
  311. move data to and from the  device  and  an
  312. associated memory buffer or buffer queue.
  313.  
  314.      The ``top'' function is the interface
  315. to the kernel _r_e_a_d and _w_r_i_t_e system calls.
  316. It does the opposite of its  corresponding
  317. ``bottom''  half;  where  the  bottom half
  318.  
  319.  
  320.                            December 6, 1988
  321.  
  322.  
  323.  
  324.  
  325.  
  326.                                 - 6 -
  327.  
  328.  
  329. places  incoming  hardware  data  into   a
  330. buffer,  the top half will remove the data
  331. from the buffer and give it to the process
  332. executing the _r_e_a_d kernel call.
  333.  
  334.      When the PS-186 kernel has data to be
  335. sent  out of a serial port (in response to
  336. a _w_r_i_t_e system call), the device driver is
  337. called  to  accept the outgoing data.  The
  338. driver adds the data to the tail end of  a
  339. queue  of  data waiting to be sent, sets a
  340. flag indicating that there is indeed  data
  341. to  be sent, and returns.  Later, when the
  342. output device finishes with  the  data  it
  343. was sending, it will cause an interrupt to
  344. occur, and  the  ``bottom  half''  of  the
  345. appropriate  device  driver  will take the
  346. next chunk of data from the queue and send
  347. it  to  the  device.  Thus the kernel (and
  348. therefore user processes)  need  not  wait
  349. for  I/O  on  a  device to complete before
  350. resuming proceeding.
  351.  
  352.      Data buffers and queues  are  dynami-
  353. cally  allocated; when data is received or
  354. generated a ``buffer'' (a block of memory)
  355. is  allocated  from  the pool of available
  356. memory to hold it, and a ``pointer''  that
  357. contains  the  memory address of the block
  358. is set up.  To save the time that would be
  359. wasted in copying from one block of memory
  360. to another, data is passed from module  to
  361. module  by  passing  the  pointer  to  the
  362. memory buffer in which the  data  resides,
  363. rather  than copying the data itself. When
  364. the data is finally  consumed,  either  by
  365. being output by a device, or copied into a
  366. user-level (outside the kernel) buffer  by
  367. a  _r_e_a_d system call, the memory space used
  368. is returned to the available memory  pool,
  369. and the buffer pointer is dereferenced.
  370.  
  371.      When a call to the kernel  with  data
  372. to  be output (a _w_r_i_t_e call) would require
  373. allocation of  more  memory  buffer  space
  374. than  is  allowed,  the process making the
  375. call is stopped by the simply not  return-
  376. ing  from  the system call to that process
  377. until there is space and the write can  be
  378. completed.  Since ``blocking'' the process
  379. in this manner  does  NOT  stop  interrupt
  380. service  nor  other  kernel functions, the
  381. device will eventually output enough  data
  382. to free up sufficient memory for the write
  383.  
  384.  
  385.                            December 6, 1988
  386.  
  387.  
  388.  
  389.  
  390.  
  391.                                 - 7 -
  392.  
  393.  
  394. to complete and for the  user  process  to
  395. resume.
  396.  
  397.      On input, if a chunk of data  arrives
  398. and  there  is no memory available to hold
  399. it, the only  practical  procedure  is  to
  400. simply  discard  the  data.  We anticipate
  401. having a large amount of memory  available
  402. for  data  buffers,  as  well as expecting
  403. good throughput, so we do  not  anticipate
  404. that  it  will  necessary  to discard data
  405. often.   As  a  practical  note,  we  have
  406. decided  to provide each input device with
  407. its own memory buffer limit so that no one
  408. device  could hog all available memory and
  409. shut out input from other devices even  in
  410. the most pathalogical of cases.  The over-
  411. riding  assumption  is  that  higher-level
  412. protocols  will handle packets lost due to
  413. memory congestion in  much  the  same  way
  414. that  packets  lost  due  to collisions or
  415. channel congestion are handled.
  416.  
  417.      A kernel _r_e_a_d call will  return  data
  418. from  the input queue to the user process;
  419. if there is no data in the queue, the user
  420. process  may  elect to wait until there is
  421. (``read-wait'') or  just  return  (``read-
  422. no-wait'').  When data is available, it is
  423. copied into a buffer space provided by the
  424. user   process   (typically   a  character
  425. array), and the  memory  buffer  space  is
  426. released  to be reused on subsequent input
  427. events.
  428.  
  429.      One can view the input-output streams
  430. as  a series of filtered interfaces to the
  431. raw packets that  are  being  received  or
  432. sent.   Thus it is possible to open a con-
  433. nection that consists of raw AX.25 frames,
  434. an AX.25 connected mode stream, IP packets
  435. in SLIP, IP packets in AX.25, TCP in IP in
  436. AX.25,  etc.   This  is  controlled by the
  437. parameters passed to  the  kernel  in  the
  438. _o_p_e_n system call.
  439.  
  440. _4.  _D_e_v_i_c_e_s
  441.  
  442.      The  PS-186  devices  that  are  most
  443. interesting  are  the  several serial con-
  444. troller chips that form the communications
  445. interfaces.   (There is an SCSI controller
  446. option for general device access, such  as
  447. to  a  disk  or  floppy controller, but we
  448.  
  449.  
  450.                            December 6, 1988
  451.  
  452.  
  453.  
  454.  
  455.  
  456.                                 - 8 -
  457.  
  458.  
  459. will not discuss that  here.)  The  serial
  460. controller  chosen was the Zilog 8530 SCC;
  461. the hardware  design  considerations  that
  462. lead  to  it being chosen are discussed in
  463. the companion paper on the hardware design
  464. of the PS-186.
  465.  
  466.      The 8530 SCC can do both asynchronous
  467. serial  I/O  (as  perhaps to a terminal or
  468. printer), and HDLC synchronous, such as is
  469. used  in  the  AX.25 protocol.  Any of the
  470. PS-186's serial ports can be configured to
  471. operate  in  either  of  these  modes.  We
  472. therefore  have  a  more  complex   device
  473. driver than if the PS-186 had fixed serial
  474. port allocations, since the device  driver
  475. must  be  able  to  handle  both sync- and
  476. async-configured devices based on  parame-
  477. ters  stored  in  a  table.  The driver is
  478. also responsible for setting up the  modes
  479. of the serial ports in the first place.
  480.  
  481. _5.  _P_r_o_t_o_c_o_l _H_a_n_d_l_i_n_g
  482.  
  483.      Fundamental to the operation of  com-
  484. munications  protocols  is  the concept of
  485. _l_a_y_e_r_i_n_g or _e_n_c_a_p_s_u_l_a_t_i_o_n, whereby data is
  486. successively  encapsulated  or ``wrapped''
  487. in layers of protocol as  it  is  prepared
  488. for transmission, and ``unwrapped'' at its
  489. destination.
  490.  
  491.      The basic concept used is known as  a
  492. _s_w_i_t_c_h.  As a railroad switch controls the
  493. path of a train, the switch  controls  the
  494. path  that  data takes through the various
  495. levels of encapsulation and unwrapping.  A
  496. _p_r_o_t_o_c_o_l  _s_w_i_t_c_h  makes  the  data passing
  497. decision based on  a  field  contained  in
  498. each protocol's header that indicates what
  499. kind of protocol may be  further  encapsu-
  500. lated within the data field of the current
  501. packet.
  502.  
  503.      The protocol handling scheme that  we
  504. chose  to  use in the PS-186 is located in
  505. the kernel software. By keeping all proto-
  506. col  wrapping  and  unwrapping  inside the
  507. main single-thread portion of the  operat-
  508. ing  system and thus making them available
  509. to all processes on the  system,  we  sim-
  510. plify  greatly the amount of protocol han-
  511. dling  required  in  the   various   other
  512. processes.
  513.  
  514.  
  515.                            December 6, 1988
  516.  
  517.  
  518.  
  519.  
  520.  
  521.                                 - 9 -
  522.  
  523.  
  524.      Each PS-186 communications  interface
  525. is  configured  at  system startup time to
  526. handle one type of outermost protocol (for
  527. example,  KISS  AX.25 is appropriate for a
  528. serial  interface  to  a  radio  link,  or
  529. perhaps  SLIP  for  a hardwire line.) As a
  530. packet is received from an  interface,  it
  531. is  examined  according  to the rules that
  532. have been set up for that interface.  When
  533. that  packet  has  been  received  and the
  534. appropriate  acknowledgements   generated,
  535. the  contents  of  the packet and selected
  536. fields  extracted  from  its  header   are
  537. passed to the appropriate protocol switch.
  538. The  protocol  switch  then  examines  the
  539. packet   contents   and  routes  the  data
  540. further to the next  protocol  module,  as
  541. appropriate.   This  process repeats until
  542. there is  no  further  enclosed  protocol,
  543. until  the  data  has been fully extracted
  544. and is available in a buffer queue  to  be
  545. used  by some user process.  Not until the
  546. data has  been  fully  extracted  does  it
  547. become  ready to leave the kernel environ-
  548. ment.
  549.  
  550.      A  concrete  example  may  make  this
  551. clearer:  Suppose that we receive an AX.25
  552. packet on a serial link that  is  attached
  553. to  a  radio. If it is for us (as shown by
  554. the destination  callsign)  we  will  ack-
  555. nowledge  that  AX.25 packet (if appropri-
  556. ate), and if it was a data packet (UI or I
  557. frame),  we will pass it to the AX.25 pro-
  558. tocol switch.  That  switch  will  examine
  559. the  Protocol  ID byte that is part of the
  560. AX.25 packet.  If the PID is for a  stream
  561. connection (a normal mode AX.25 connection
  562. such as  is  commonly  in  use  today  for
  563. keyboard-to-keyboard   typing),  then  the
  564. packet will be  further  switched  by  the
  565. AX.25  Stream  switch,  which will send it
  566. (based on the callsign in the source field
  567. of  the  AX.25  header, since there can be
  568. only one connection per  source  callsign)
  569. to the user process that is servicing that
  570. stream connection.
  571.  
  572.      If, instead,  the  PID  is  for  ARP,
  573. RARP,  RIP, or one of the other raw packet
  574. protocols, the data will be  sent  to  the
  575. user  process  that  handles  that kind of
  576. packet  -  to  build  address  or  routing
  577. tables, for example.
  578.  
  579.  
  580.                            December 6, 1988
  581.  
  582.  
  583.  
  584.  
  585.  
  586.                                 - 10 -
  587.  
  588.  
  589.      A packet with the PID  indicating  an
  590. encapsulated  IP  packet  is passed to the
  591. module that does IP protocol  -  checksums
  592. and other integrity checks.  If the packet
  593. is ok by IP standards, the IP module  will
  594. call  the  IP  protocol switch, which will
  595. examine the Protocol ID  byte  in  the  IP
  596. packet (distinct from the PID in the AX.25
  597. packet).  This will in turn route  the  IP
  598. packet  to  another protocol handler, such
  599. as UDP, ICMP, RDP, or TCP -  whichever  we
  600. have   implemented.    Again,   those  are
  601. expected to route the data based on fields
  602. in the headers of these protocols.
  603.  
  604.      TCP  is  an  interesting  example  of
  605. imbedded protocols and switching. Each TCP
  606. connection as seen on a host is designated
  607. uniquely  by  a  64-bit number that is the
  608. concatenation of the distant host's Inter-
  609. net  address  (32  bits) and the local and
  610. distant TCP logical port numbers (16  bits
  611. each).   Since  when  a  TCP connection is
  612. initiated, the originating host must chose
  613. a  new  (not  currently nor recently used)
  614. logical source port number, there  can  be
  615. multiple  logical connections between TCPs
  616. on the same two hosts  even  to  the  same
  617. distant  port.   The  data  switch  in the
  618. receiving TCP is required to separate  out
  619. the  streams of data based upon the 64-bit
  620. stream identifier,  and  deliver  each  to
  621. potentially  separate  user  processes  as
  622. appropriate.
  623.  
  624. _6.  _P_r_o_c_e_s_s _C_o_n_t_r_o_l
  625.  
  626.      The PS-186 is organized as  a  multi-
  627. tasking  system,  implying  that more than
  628. one process may  be  running  at  a  time.
  629. There is always a ``null'' process that is
  630. constantly ready to run; when there is  no
  631. other  process ready to run, the null pro-
  632. cess is active.
  633.  
  634.      Processes are created as  needed  and
  635. destroyed  when no longer needed.  In this
  636. manner,  resources  are  not  consumed  on
  637. idling  processes  that are merely sitting
  638. around waiting in case  they  are  needed.
  639. For  example,  when an AX.25 connection is
  640. made to the PS-186 network node, a process
  641. is started to handle incoming stream data.
  642. This process will exit and  its  resources
  643.  
  644.  
  645.                            December 6, 1988
  646.  
  647.  
  648.  
  649.  
  650.  
  651.                                 - 11 -
  652.  
  653.  
  654. will be deallocated when the connection is
  655. closed.  Each such connection will cause a
  656. separate process to be spawned.
  657.  
  658.      User-level processes do  not  perform
  659. I/O  operations  to  devices; they instead
  660. make  _s_y_s_t_e_m  _c_a_l_l_s  to  the  kernel  that
  661. invoke  the  required I/O.  When a process
  662. makes a system  call  that  would  require
  663. some  time to complete (such as I/O), that
  664. process is _b_l_o_c_k_e_d - that  is,  placed  in
  665. suspended  state,  and  another process is
  666. resumed.   Periodically  (in  response  to
  667. interrupts   from   the  system  real-time
  668. clock),  the  current  process   will   be
  669. suspended  and  another  selected  to run.
  670. Thus no process can hog CPU resources, and
  671. I/O  can proceed in parallel with ordinary
  672. processing.
  673.  
  674.      We feel that multitasking is a  supe-
  675. rior  method in this application, although
  676. it is much more  complex  than  a  single-
  677. threaded  program,  because  much  of what
  678. goes on in a device like the PS-186 is not
  679. time-critical, and we can therefore devote
  680. the CPU to high-priority events  (such  as
  681. the  arrival  and  buffering  of a packet)
  682. that are truly critical.
  683.  
  684. _7.  _C_o_n_c_l_u_s_i_o_n
  685.  
  686.      We  feel  that  the  PS-186  Advanced
  687. Packet Controller represents a significant
  688. step towards the construction of an  effi-
  689. cient  and  practical  amateur  radio data
  690. network.  By combining fast  hardware  and
  691. efficient software into a flexible package
  692. that  accomodate  today's  and  tomorrow's
  693. protocols, we believe we have advanced the
  694. network one step further along the road to
  695. completion.
  696.  
  697. _8.  _R_e_f_e_r_e_n_c_e_s
  698.  
  699. [1]  AT&T,    ``Communications    Protocol
  700.      Specification   BX.25'',  Publication
  701.      54001 Issue 2 (June 1980)
  702.  
  703. [2]  Comer, D., _O_p_e_r_a_t_i_n_g _S_y_s_t_e_m _D_e_s_i_g_n  -
  704.      _t_h_e   _X_I_N_U   _A_p_p_r_o_a_c_h,  Prentice-Hall
  705.      (1984)
  706.  
  707.  
  708.  
  709.                            December 6, 1988
  710.  
  711.  
  712.  
  713.  
  714.  
  715.                                 - 12 -
  716.  
  717.  
  718. [3]  Comer, D., _O_p_e_r_a_t_i_n_g _S_y_s_t_e_m _D_e_s_i_g_n  -
  719.      _I_n_t_e_r_n_e_t_w_o_r_k_i_n_g  _w_i_t_h _X_I_N_U, Prentice-
  720.      Hall (1987)
  721.  
  722. [4]  DEC/Intel/Xerox, ``The Ethernet  -  A
  723.      Local  Area  Network  Data Link Layer
  724.      and Physical Layer  Specification.'',
  725.      Version 1.0 (Sep 30 1980)
  726.  
  727. [5]  Fox, T. L., ``AX.25  Amateur  Packet-
  728.      Radio  Link-Layer Protocol'', Version
  729.      2.0, ARRL (Oct 1984)
  730.  
  731. [6]  Griffiths, Georgia,  and  G.  Carlyle
  732.      Stones,  ``The  Tea-Leaf Reader Algo-
  733.      rithm: An Efficient Implementation of
  734.      CRC-16  and  CRC-32'', Communications
  735.      of the ACM, 30,7 (July 1987)
  736.  
  737. [7]  IEEE, _L_o_g_i_c_a_l _L_i_n_k _C_o_n_t_r_o_l, ANSI/IEEE
  738.      Std 802.2-1985 (1984)
  739.  
  740. [8]  Postel, J.  et  al.,  ``DDN  Protocol
  741.      Handbook'', USC-ISI (1986)
  742.  
  743. [9]  Tanenbaum,  A.,  _C_o_m_p_u_t_e_r   _N_e_t_w_o_r_k_s,
  744.      Prentice-Hall (1981)
  745.  
  746. [10] Tanenbaum, A.,  _O_p_e_r_a_t_i_n_g  _S_y_s_t_e_m_s  -
  747.      _D_e_s_i_g_n  _a_n_d _I_m_p_l_e_m_e_n_t_a_t_i_o_n, Prentice-
  748.      Hall (1987)
  749.  
  750.  
  751.  
  752.  
  753.  
  754.  
  755.  
  756.  
  757.  
  758.  
  759.  
  760.  
  761.  
  762.  
  763.  
  764.  
  765.  
  766.  
  767.  
  768.  
  769.  
  770.  
  771.  
  772.  
  773.                            December 6, 1988
  774.  
  775.  
  776. 
  777.